package com.qckj.amz.service;

import com.qckj.amz.domain.ShopAuth;
import com.qckj.common.core.domain.AjaxResult;
import com.qckj.common.core.page.TableDataInfo;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 店铺授权Service接口
 *
 * @author luchuan
 * @since 1.0 2021-11-09
 */
public interface IShopAuthService  {
    /**
     * 查询店铺授权
     *
     * @param shopAuthId 店铺授权ID
     * @return 店铺授权
     */
    ShopAuth findById(Long shopAuthId);

    /**
     * 分页查询店铺授权列表
     *
     * @param req 店铺授权
     * @return 店铺授权集合
     */
    Page<ShopAuth> findShopAuthPage(ShopAuth req);

    /**
     * 查询店铺授权列表
     *
     * @param req 店铺授权
     * @return 店铺授权集合
     */
    List<ShopAuth> findShopAuthList(ShopAuth req);

    /**
     * 新增店铺授权
     *
     * @param shopAuth 店铺授权
     * @return 结果
     */
    AjaxResult save(ShopAuth shopAuth);

    /**
     * 批量删除店铺授权
     *
     * @param shopAuthIds 需要删除的店铺授权ID
     * @return 结果
     */
    void deleteByIds(List<Long> shopAuthIds);

    /**
     * 删除店铺授权信息
     *
     * @param shopAuthId 店铺授权ID
     * @return 结果
     */
    void deleteShopAuthById(Long shopAuthId);

    /**
     * 店铺授权/新增-通过当前登录人获取已维护的店铺
     * @return
     */
    AjaxResult getShopCodeByUsername();

    /**
     * 获取已授权的用户信息
     * @param shopAuth
     * @return
     */
    TableDataInfo getShopAuthPage(ShopAuth shopAuth);

    /**
     * 修改店铺授权
     * @param shopAuth
     * @return
     */
    AjaxResult edit(ShopAuth shopAuth);

    /**
     * 执行授权
     * @param formAuth
     *      shopAuthId: null,
     *      sellingRegionCode: null,
     *      spapi_Auth_Url: null,
     *      spapi_oauth_code_url: null
     * @return
     */
    AjaxResult executeAuth(String formAuth);

    /**
     * 店铺授权/订单同步
     * @param shopAuthIds
     * @return
     */
    AjaxResult syncOrder(Long[] shopAuthIds);

    /**
     * 通过当前登录人获取自己授权的多个店铺信息
     * @return
     */
    AjaxResult getShopCodeToShopAuth();

    /**
     * 上传产品/选择店铺-通过店铺代码获取已授权的站点
     * @param shopCode
     * @return
     */
    AjaxResult getCountryCodeByShopCode(String shopCode);
}
